Skip to content

rules(license): cap licence findings at :review strategy (neurophone#99 closeout) - #415

Merged
hyperpolymath merged 1 commit into
mainfrom
rules/license-no-auto-fix
Jun 2, 2026
Merged

rules(license): cap licence findings at :review strategy (neurophone#99 closeout)#415
hyperpolymath merged 1 commit into
mainfrom
rules/license-no-auto-fix

Conversation

@hyperpolymath

Copy link
Copy Markdown
Owner

Summary

  • Policy header in lib/rules/cicd_rules.ex License Validation section: quotes the verbatim owner directive 2026-06-02 + 5-way classification.
  • Cap helpers: license_finding_strategy/0 (always :review), license_finding_severity_cap/1 (always :warn), license_related_finding?/1 (matches the same regex as the gitbot-fleet dispatcher gate), owner_license_classification/0 (canonical 5-way map).
  • Scorecard ingestor SC-010 Licenseauto_fixable: false with remediation text spelling out the 5-way classification.

Why

Owner directive 2026-06-02 forbids automated licence/SPDX edits. Triggered by neurophone#99 — an auto-generated PR by the Claude bot reverting PMPL-1.0-or-later → MPL-2.0 across ~140 files, closed by the owner. The fix gates the dispatcher; this PR ensures hypatia (the rule source) never emits an auto-execute licence finding in the first place.

Five-way classification (verbatim):

"mpl-2.0 is for my sole repos, all rights reserved is for 007, agpl-3.0-or-later is for those shared with my son, and leave other people's forked stuff alone … only palimpsest license for obvious reasons should be talking about palipsest and palimpsest plasma, and consent-aware-http, but in that case prospectively"

Test plan

  • Hypatia.Rules.CicdRules.license_finding_strategy() == :review
  • Hypatia.Rules.CicdRules.license_finding_severity_cap(:critical) == :warn
  • Hypatia.Rules.CicdRules.license_related_finding?("LicenseCompliance") == true
  • Hypatia.Rules.CicdRules.license_related_finding?("MissingSPDX") == true
  • Hypatia.ScorecardIngestor SC-010 auto_fixable is false.
  • mix test passes.

Related: hyperpolymath/gitbot-fleet chore/halt-license-auto-prs, hyperpolymath/standards docs/license-no-auto-policy.

…99 closeout)

Owner directive 2026-06-02 forbids automated licence/SPDX edits. Licence
findings are flag-only; downstream pipelines must never auto-execute. Triggered
by neurophone#99 (auto-PR reverting PMPL -> MPL-2.0 across ~140 files, closed
by owner).

- lib/rules/cicd_rules.ex: prepend "POLICY -- Manual Only" header to the
  License Validation section quoting the verbatim owner directive + 5-way
  classification. Add `license_finding_strategy/0` (always `:review`),
  `license_finding_severity_cap/1` (always `:warn`),
  `license_related_finding?/1` (matches the same regex as the gitbot-fleet
  dispatcher gate), and `owner_license_classification/0` returning the
  canonical 5-way map.
- lib/scorecard_ingestor.ex: SC-010 `License` -> `auto_fixable: false`
  with remediation text spelling out the 5-way classification.

Canonical: ~/.claude/projects/.../feedback_estate_license_policy_umbrella.md
Sibling:   ~/.claude/projects/.../feedback_no_automated_licence_edits.md

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
@hyperpolymath
hyperpolymath enabled auto-merge (squash) June 2, 2026 10:03
@hyperpolymath
hyperpolymath merged commit 22e00ce into main Jun 2, 2026
23 of 31 checks passed
@hyperpolymath
hyperpolymath deleted the rules/license-no-auto-fix branch June 2, 2026 10:04
@github-actions

github-actions Bot commented Jun 2, 2026

Copy link
Copy Markdown

🔍 Hypatia Security Scan

Findings: 146 issues detected

Severity Count
🔴 Critical 0
🟠 High 0
🟡 Medium 146
View findings
[
  {
    "reason": "Action urin 21 JRE\n        uses: actions/setup-java@be666c2fcd27 needs attention",
    "type": "unpinned_action",
    "file": "verify-proofs.yml",
    "action": "pin_sha",
    "rule_module": "workflow_audit",
    "severity": "medium"
  },
  {
    "reason": "Issue in ci.yml",
    "type": "missing_timeout_minutes",
    "file": "ci.yml",
    "action": "flag",
    "rule_module": "workflow_audit",
    "severity": "medium"
  },
  {
    "reason": "Issue in ci.yml",
    "type": "missing_timeout_minutes",
    "file": "ci.yml",
    "action": "flag",
    "rule_module": "workflow_audit",
    "severity": "medium"
  },
  {
    "reason": "Issue in ci.yml",
    "type": "missing_timeout_minutes",
    "file": "ci.yml",
    "action": "flag",
    "rule_module": "workflow_audit",
    "severity": "medium"
  },
  {
    "reason": "Issue in ci.yml",
    "type": "missing_timeout_minutes",
    "file": "ci.yml",
    "action": "flag",
    "rule_module": "workflow_audit",
    "severity": "medium"
  },
  {
    "reason": "Issue in ci.yml",
    "type": "missing_timeout_minutes",
    "file": "ci.yml",
    "action": "flag",
    "rule_module": "workflow_audit",
    "severity": "medium"
  },
  {
    "reason": "Issue in ci.yml",
    "type": "missing_timeout_minutes",
    "file": "ci.yml",
    "action": "flag",
    "rule_module": "workflow_audit",
    "severity": "medium"
  },
  {
    "reason": "Issue in ci.yml",
    "type": "missing_timeout_minutes",
    "file": "ci.yml",
    "action": "flag",
    "rule_module": "workflow_audit",
    "severity": "medium"
  },
  {
    "reason": "Issue in ci.yml",
    "type": "missing_timeout_minutes",
    "file": "ci.yml",
    "action": "flag",
    "rule_module": "workflow_audit",
    "severity": "medium"
  },
  {
    "reason": "Issue in clusterfuzzlite.yml",
    "type": "missing_timeout_minutes",
    "file": "clusterfuzzlite.yml",
    "action": "flag",
    "rule_module": "workflow_audit",
    "severity": "medium"
  }
]

Powered by Hypatia Neurosymbolic CI/CD Intelligence

hyperpolymath added a commit that referenced this pull request Jun 2, 2026
…tectors (auto-fix wiring) (#422)

Continues today's hardening from hypatia#414. Three patterns we hit
manually that should be auto-handled next time: Chapel 5 sharp edges,
CodeQL cron drift, inherited main-branch debt. License category remains
auto_fixable:false per #415.

## Commits

- **99b7970** WF024 chapel auto-fix wiring + 4 sub-pattern recipes
- Primary WF024 finding now sets `auto_fixable: true` + `recipe_id:
chapel-runs-on-pin-22-04`
- New `check_chapel_sharp_edges/1` emits 4 recipes:
`chapel-manpath-guard`, `chapel-chpl-llvm-export`,
`chapel-replace-chpl-about-with-version`, `chapel-find-comm-gasnet`
(panic-attack#99)

- **2285685** WF025 CodeQL cron-drift detector
  - Canonical `0 6 1 * *` per standards#286
- Sub-categories route to standards#288 (weekly→monthly) vs
standards#324 (non-canonical→canonical)
  - Shared recipe `codeql-cron-monthly`

- **df4f545** BH008 inherited-main-branch-debt detector
- Threshold ≥3 open PRs sharing same failing check → flag (`:warn`,
`auto_fixable: false`)
  - Recommends `file_root_fix_pr_on_main` instead of N retries

## Test plan

- [x] Each rule has ExUnit coverage under `test/rules/`
- [x] Chapel detector test covers all 5 recipe_ids +
maximal-bad-workflow case
- [x] Cron-drift classifier covers canonical / weekly /
non-canonical-monthly / malformed
- [x] Inherited-debt fires at 3 PRs, NOT at 2; honors custom threshold;
per-PR-unique failures suppressed
- [ ] CI to verify `mix test` (local mix env was Elixir 1.14 — couldn't
fetch deps); individual files compile clean via `elixirc`

🤖 Generated with [Claude Code](https://claude.com/claude-code)

---------

Co-authored-by: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
hyperpolymath added a commit that referenced this pull request Jun 2, 2026
## Summary

Reflect recent rule-catalogue PRs in CHANGELOG and STATE.a2ml:

- **#414** — scoped MPL-2.0 carve-outs for upstream-derived submodules
- **#415** — SC-010 transitive_dep_drift flipped to auto_fixable:false
(manual-only)
- **#422** — WF024 chapel_runs_on_drift auto-fix + WF025
cron_schedule_drift + BH008 inherited_main_debt

## Files

- CHANGELOG.md — Unreleased entries
- .machine_readable/6a2/STATE.a2ml — session-history entry

## Test plan

- [x] Markdown renders
- [x] No license/SPDX content touched

Co-authored-by: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant